import request from '@/config/axios'

/** 资金流水信息 */
export interface FinancialFlow {
          flowId: number; // 流水ID（主键）
          userId?: number; // 用户ID（关联用户表）
          petId: number; // 宠物ID（关联宠物表，可为空）
          orderNumber?: string; // 订单号（业务唯一标识）
          amountType?: string; // 金额类型（消费/充值）
          transactionChannel?: string; // 交易渠道
          amount?: number; // 金额（单位：分）
          balanceAfter?: number; // 变动后余额
          businessType: string; // 业务类型（如：PET_FOOD/MEDICAL/SERVICE）
          relatedId: number; // 关联业务ID（如订单ID、服务ID等）
          remark: string; // 备注信息
          discount?: number; // 折扣率（0-1之间的小数，如0.8表示8折）
          bonusAmount?: number; // 满赠金额（单位：分）
  }

/** 用户排行榜信息 */
export interface UserRank {
  userId: number; // 用户ID
  userName: string; // 用户名称
  totalAmount: number; // 总金额（单位：分）
  count: number; // 交易次数
}

/** 宠物消费统计信息 */
export interface PetConsumptionStats {
  petId: number; // 宠物ID
  petName: string; // 宠物名称
  totalAmount: number; // 总消费金额（单位：分）
}

/** 用户消费统计信息 */
export interface UserConsumptionStats {
  userId: number; // 用户ID
  totalAmount: number; // 总消费金额（单位：分）
  petStats: PetConsumptionStats[]; // 各宠物消费统计
}

// 资金流水 API
export const FinancialFlowApi = {
  // 查询资金流水分页
  getFinancialFlowPage: async (params: any) => {
    return await request.get({ url: `/javainfo/financial-flow/page`, params })
  },

  // 查询资金流水详情
  getFinancialFlow: async (id: number) => {
    return await request.get({ url: `/javainfo/financial-flow/get?id=` + id })
  },

  // 新增资金流水
  createFinancialFlow: async (data: FinancialFlow) => {
    return await request.post({ url: `/javainfo/financial-flow/create`, data })
  },

  // 修改资金流水
  updateFinancialFlow: async (data: FinancialFlow) => {
    return await request.put({ url: `/javainfo/financial-flow/update`, data })
  },

  // 删除资金流水
  deleteFinancialFlow: async (id: number) => {
    return await request.delete({ url: `/javainfo/financial-flow/delete?id=` + id })
  },

  /** 批量删除资金流水 */
  deleteFinancialFlowList: async (ids: number[]) => {
    return await request.delete({ url: `/javainfo/financial-flow/delete-list?ids=${ids.join(',')}` })
  },

  // 导出资金流水 Excel
  exportFinancialFlow: async (params) => {
    return await request.download({ url: `/javainfo/financial-flow/export-excel`, params })
  },

  // 获取最近x天每天的资金流水统计
  getDailyStatistics: async (params: any) => {
    return await request.get({ url: `/javainfo/financial-flow/daily-statistics`, params })
  },

  // 获取最近x天用户资金流水排行榜
  getUserRank: async (params: { days: number; amountType: string }) => {
    return await request.get({ url: `/javainfo/financial-flow/user-rank`, params })
  },

  // 获取用户消费统计（近一年）
  getUserConsumptionStats: async (userId: number) => {
    return await request.get<UserConsumptionStats>({ url: `/javainfo/financial-flow/user-consumption-stats?userId=${userId}` })
  }
}
